package Rangel.firebrigade.buildingdetector.explore;

import Rangel.firebrigade.buildingdetector.FireBrigadeTarget;
import Rangel.firebrigade.buildingdetector.idbased.IExploreLeaderSelector;
import Rangel.firebrigade.buildingdetector.idbased.IdBasedExploreLeaderSelector;
import Rangel.firebrigade.world.RangelFireBrigadeWorld;
import adf.agent.develop.DevelopData;
import adf.agent.info.AgentInfo;
import adf.agent.info.ScenarioInfo;
import adf.agent.info.WorldInfo;
import adf.agent.module.ModuleManager;
import adf.component.module.complex.Search;

public abstract class ExploreManager extends Search {
    protected ExploreManager(AgentInfo ai, WorldInfo wi, ScenarioInfo si, ModuleManager moduleManager, DevelopData developData) {
        super(ai,wi,si,moduleManager,developData);
        this.world = (RangelFireBrigadeWorld) RangelFireBrigadeWorld.load(agentInfo, worldInfo, scenarioInfo, moduleManager, developData);
        leaderSelector = new IdBasedExploreLeaderSelector(world);
        exploreDecisionMaker = new ExploreAroundFireDecisionFactory(world);//todo consider on following info.
    }

    protected RangelFireBrigadeWorld world;
    protected ExploreAroundFireDecisionFactory exploreDecisionMaker;
    protected IExploreLeaderSelector leaderSelector;
    protected FireBrigadeTarget lastFireBrigadeTarget = null;

    public abstract boolean isTimeToExplore(FireBrigadeTarget fireBrigadeTarget);


}
